<?php

/**
 * personal actions.
 *
 * @package    cronos-doctrine
 * @subpackage personal
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class opprestamosActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
      
      $operadores_prestamos = new OperadoresPrestamos();
      $this->operadores_prestamos = $operadores_prestamos->getOperadoresPrestamos();
    
    
  }

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new OperadoresPrestamosForm();
    
    
  }
  
    public function executeNewOp(sfWebRequest $request)
  {
        
    $this->form = new OperadoresPrestamosForm();
    
    $this->fecha = $request->getParameter('fecha');
    $this->operador_id = $request->getParameter('operador_id');
    $this->operador_n = $request->getParameter('operador_n');
    $this->camioneta_id = $request->getParameter('camioneta_id');
    $this->monto = $request->getParameter('monto');
    
    
    $this->form->setWidget('porcentaje', new sfWidgetFormInputText(array(),array('value' => 0)));
    $this->form->setWidget('monto', new sfWidgetFormInputText(array(),array('value' => $this->monto)));
    $this->form->setWidget('monto_penalidad', new sfWidgetFormInputText(array(),array('value' => $this->monto)));
    $this->form->setWidget('operador_id', new sfWidgetFormInputHidden(array(),array('value' => $this->operador_id)));
    
    $this->setTemplate('new');
    
  }
  
  

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new OperadoresPrestamosForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($operadores_prestamos = Doctrine_Core::getTable('OperadoresPrestamos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresPrestamos does not exist (%s).', $request->getParameter('id')));
    
    $operadores_egresos = new OperadoresEgresos();
    $this->operadores_egresos = $operadores_egresos->getPrestamos($request->getParameter('id'));
    
    $this->form = new OperadoresPrestamosForm($operadores_prestamos);
    
  }

  public function executeUpdate(sfWebRequest $request)
  {
      
      
              
              
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($operadores_prestamos = Doctrine_Core::getTable('OperadoresPrestamos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresPrestamos does not exist (%s).', $request->getParameter('id')));
    $this->form = new OperadoresPrestamosForm($operadores_prestamos);
    
    $this->processForm($request, $this->form);

    $this->setTemplate('edit');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($operadores_prestamos = Doctrine_Core::getTable('OperadoresPrestamos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresPrestamos does not exist (%s).', $request->getParameter('id')));
    $operadores_prestamos->delete();

    $this->redirect('opprestamos/index');
  }
  
  function obtenerDia($fecha)
  {
        
        $dias=array("7","1","2","3","4","5","6");
        
        $dd=explode('-',$fecha);
        
        $dia= date("w",mktime(0, 0, 0, $dd[1], $dd[2], $dd[0]));
        
      return $dias[$dia];
    
  }

  function fechaSuma($fecha){
            
            
            $nuevafecha = strtotime ( '+1 day' , strtotime ( $fecha ) ) ;
            $nuevafecha = date ( 'Y-m-d' , $nuevafecha );

            return $nuevafecha;
            
      
      
  }
  
  function comparacionFecha($fecha,$diasArray){
      
      
      
      if(!in_array($this->obtenerDia($fecha), $diasArray)){
          
          $fecha = $this->fechaSuma($fecha);
          $fecha = $this->comparacionFecha($fecha,$diasArray);
         
      }
      
      return $fecha;
      
  }
  
  
  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      
       $operadores_prestamos = $form->save();
       
       
     
       $dias_semanas = $operadores_prestamos->getDias();
       
        $diasArray = array();
        //Colocar los datos en un arreglo
        foreach($dias_semanas as $dias_b)
        $diasArray[] = $dias_b;
        
        
       $count = 1;
       $suma_monto_entero = 0;
       $fecha = $operadores_prestamos->getFecha();
       
       //echo $this->obtenerDia('2013-12-01');
       
       //En caso de que existan ya datos en operadores egresos
       $operadores_egresos = new OperadoresEgresos();
       $operadores_egresos = $operadores_egresos->getPrestamos($operadores_prestamos->getId());
       
       $counter_egresos = 0;
       foreach ($operadores_egresos as $operadores_egreso){
           
           if($operadores_egreso->getMontoPago()>0){
              
              $counter_egresos++;
              $fecha = $this->fechaSuma($operadores_egreso->getFecha());
              
           }else{
               
              $operadores_egreso->delete();
              
           }
           
       }
       
       $countador_financiamiento = $operadores_prestamos->getFinanciamiento()-$counter_egresos;
       
       $monto_total     = $operadores_prestamos->getMonto()-$operadores_prestamos->getMontoPagado();
       $monto_parcial   = $monto_total/$countador_financiamiento;
       $monto_entero    = round($monto_parcial);
       
       $months = array ("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");  
       
       for($i=1; $i<=$countador_financiamiento;$i++){
           
           
           
           $fecha = $this->comparacionFecha($fecha,$diasArray);
            
            
           
            $newOperadorEgresos = new OperadoresEgresos();
            $newOperadorEgresos->setConceptoCfId($operadores_prestamos->getConceptoCfId());
            $newOperadorEgresos->setEmpresaId($this->getUser()->getAttribute('agente_user_empresa_id'));
            $newOperadorEgresos->setOperadorId($operadores_prestamos->getOperadorId());
            $newOperadorEgresos->setOperadoresPrestamosId($operadores_prestamos->getId());
            
            $fechaA  = explode("-",$operadores_prestamos->getFecha());
            $fechaA  = $fechaA[2].'-'.$months[intval($fechaA[1])].'-'.$fechaA[0];
            
            $newOperadorEgresos->setDescripcion('Pago de adeudo generado el'
                    . ' '.$fechaA.'. Monto total de <b>$'.number_format($operadores_prestamos->getMonto(),0,'.',',').'</b> por concepto: <b>'.strtoupper($operadores_prestamos->getConcepto()).' '.$i.'/'.$operadores_prestamos->getFinanciamiento().'</b>');
            
            if($i==$operadores_prestamos->getFinanciamiento()){
                $newOperadorEgresos->setMonto($monto_total-$suma_monto_entero);
            }else{
                $suma_monto_entero = $suma_monto_entero + $monto_entero;
                $newOperadorEgresos->setMonto($monto_entero);
            }
            $newOperadorEgresos->setFecha($fecha);
            $newOperadorEgresos->save();
            $fecha = $this->fechaSuma($fecha);
            
            
            
       }
       
      
      $this->redirect('opprestamos/edit?id='.$operadores_prestamos->getId());
      
      
    }
  }
  
  
   public function executeEditEgresos(sfWebRequest $request)
  {
    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    $this->form = new OperadoresEgresosForm($operadores_egresos);
    $this->form->setWidget('descripcion', new sfWidgetFormInputHidden());
  }

  public function executeUpdateEgresos(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    $this->form = new OperadoresEgresosForm($operadores_egresos);

    $this->processFormEgresos($request, $this->form);
    $this->form->setWidget('descripcion', new sfWidgetFormInputHidden());
    $this->setTemplate('editEgresos');
  }
  
    protected function processFormEgresos(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
        
      $operadores_egresos = $form->save();
      
      $this->redirect('opprestamos/editEgresos?id='.$operadores_egresos->getId());
      
    }
  }
  
  
    public function executeDeleteEgresos(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($operadores_egresos = Doctrine_Core::getTable('OperadoresEgresos')->find(array($request->getParameter('id'))), sprintf('Object OperadoresEgresos does not exist (%s).', $request->getParameter('id')));
    
    $id = $operadores_egresos->getOperadoresPrestamosId();
    $operadores_egresos->delete();
    
    $this->redirect('opprestamos/edit?id='.$id);
    
  }
  
  
}
